package com.lxl.bt.util;

import android.app.Activity;
import android.content.Intent;
import android.net.Uri;
import android.os.Build;
import android.provider.MediaStore;
import android.util.Log;

import androidx.core.content.FileProvider;
import androidx.fragment.app.FragmentActivity;

import com.lxl.bt.BuildConfig;
import com.leo.result.helper.OnActivityResultListener;
import com.leo.result.helper.ResultHelper;

import java.io.File;

/**
 * @Author : xinlong.lv
 */
public class PhotoUtils {

    private static final String TAG = PhotoUtils.class.getSimpleName();

    /**
     * 创建多级目录
     *
     * @param paths 需要创建的目录
     * @return 是否成功
     */
    public static boolean createPaths(String paths) {
        File dir = new File(paths);
        return !dir.exists() && dir.mkdir();
    }

    /**
     * 打开相机进行拍照
     */
    @Deprecated
    public void startCamera(Activity activity, File photoFile, int requestCode) {
        if (!photoFile.getParentFile().exists()) {
            photoFile.getParentFile().mkdirs();
        }
        Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
        //判断是否是AndroidN以及更高的版本
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
            //此处的 authority配置， 注意要和 AndroidManifest.xml 中的保持一致
            Uri uri = FileProvider.getUriForFile(activity,
                    BuildConfig.APPLICATION_ID + ".fileProvider", photoFile);

            intent.putExtra(MediaStore.EXTRA_OUTPUT, uri);
        } else {
            intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(photoFile));
        }
        activity.startActivityForResult(intent, requestCode);
    }

    /**
     * 拍摄照片
     *
     * @param activity
     * @param photoFile
     * @param requestCode
     */
    @Deprecated
    public static void takePhoto(Activity activity, File photoFile, int requestCode) {
        if (!photoFile.getParentFile().exists()) {
            photoFile.getParentFile().mkdirs();
        }
        if (photoFile.exists()) {
            photoFile.delete();
        }
        Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
        intent.addCategory(Intent.CATEGORY_DEFAULT);
        // 把文件地址转换成Uri格式
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
            //此处的 authority配置， 注意要和 AndroidManifest.xml 中的保持一致
            Uri uri = FileProvider.getUriForFile(activity,
                    BuildConfig.APPLICATION_ID + ".fileProvider", photoFile);
            //添加这一句表示对目标应用临时授权该Uri所代表的文件
            intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
            intent.putExtra(MediaStore.EXTRA_OUTPUT, uri);
        } else {
            intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(photoFile));
        }
        activity.startActivityForResult(intent, requestCode);
    }

    /**
     * 拍摄照片
     *
     * @param activity
     * @param photoFile 图片存放路径
     * @param listener  拍照完成回调监听器
     */
    public static void takePhoto(Activity activity, File photoFile, OnActivityResultListener listener) {
        Log.d(TAG, "takePhoto: photoFile======" + photoFile.getAbsolutePath());
        if (!photoFile.getParentFile().exists()) {
            photoFile.getParentFile().mkdirs();
        }
        if (photoFile.exists()) {
            photoFile.delete();
        }
        Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
        intent.addCategory(Intent.CATEGORY_DEFAULT);
        // 把文件地址转换成Uri格式
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
            //此处的 authority配置， 注意要和 AndroidManifest.xml 中的保持一致
            Uri uri = FileProvider.getUriForFile(activity,
                    BuildConfig.APPLICATION_ID + ".fileProvider", photoFile);
            //添加这一句表示对目标应用临时授权该Uri所代表的文件
            intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
            intent.putExtra(MediaStore.EXTRA_OUTPUT, uri);
        } else {
            intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(photoFile));
        }

        ResultHelper.with((FragmentActivity) activity).startForResult(intent, listener);

    }



}
